﻿#ifndef __GRAPH_ABSTRACT_H__
#define __GRAPH_ABSTRACT_H__

/* Includes: */
#include "cocos2d.h"

USING_NS_CC;

/**
    \brief Класс абстрактной графической сцены.
 */
class GrSceneAbstract : public CCScene
{
public: 
    /** \brief Конструктор абстрактного класса графической сцены. 
        \param showMenuBtn флаг для рисования кнопки выхода в главное меню.
        \param portrait флаг информирования сцены о портретном режиме.
    */
    GrSceneAbstract( bool showMenuBtn = false, bool portrait = false );
    
    /** \brief Виртуальная функция для события входа в сцену. */
    virtual void onEnter();

    /** \brief Виртуальная функция для начальной подготовки сцены. Нужна для возможности переопределения. */
    virtual void prepareScene();

    /** \brief Виртуальная функция запуска текущей сцены. */
    virtual void runScene() = 0;

    /** \brief Коллбэк для возврата в главное меню. */
    void mainMenuCallback( CCObject* pSender );
    
    /** \brief Виртуальная функция возврата в главное меню. Нужна для возможности переопределения. */
    virtual void mainMenu();

protected:
    bool p_portrait;    //!< Флаг необходимости рисования сцены в портретном режиме.
    bool p_showMenuBtn; //!< Флаг для отображения кнопки выхода в главное меню.
};

#endif /* __GRAPH_ABSTRACT_H__ */
